#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include "WebFace.h"
#include <EEPROM.h> // Работа с памятью
/* Установите здесь свои SSID и пароль */
const char* ssid = "WaterStop";       // SSID
const char* password = "00000000";  // пароль

/* Настройки IP адреса */
IPAddress local_ip(192,168,1,1);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);

/*Запуск сервера */
ESP8266WebServer server(80);
bool _triger = false;//для запуска загрузки настроек из памяти после перенастройки модуля
int _timerMFatall = 0;
int _literM = 0;
int _literImp = 0;
int _literLimit = 0;
bool _choceSensor = true; //Добавил// по умолчанию настройка на импульсный датчик true - импульсный сенсор считает литры, false - сенсор потока 

/*Старотовая страница */
void handle_OnConnect() 
{ 
  Serial.println("Connect");
  server.send(200, "text/html", SendHTML((_timerMFatall / 60000), _literM, _literImp, _choceSensor));  //Добавил _choceSensor// Делим на 60000 для отображения в минутах в веб морде 
}

/*//Добавил// Преобразование стр в булл*/
bool strToBool(String inputString)
{
  if (inputString == "true")
  {
    return true;
  }
  return false;
}

/*Страница перенастройки модуля*/
void inputWebFace()
{
  _timerMFatall = server.arg("timerMaxFatall").toInt(); // время в минутах 
  _timerMFatall *= 60000; // Переводим в милисекунды потом сохраняем в памяти
  _literM = server.arg("literMax").toInt(); // Количество литров
  _literImp = server.arg("literImpuls").toInt();  // Количество литров за импульс
  //server.send(200, "text/html", SendHTML((_timerMFatall / 60000), _literM, _literImp, _choceSensor));  //Добавил _choceSensor// Делим на 60000 для отображения в минутах в веб морде
  if (_literM > 0)
    {
      _literLimit = _literM / _literImp;
    }
    else
    {
     _literLimit = 0; 
    }
  // не знаю как граматно организовать запись данных памяти при сохранении настроек по этому при каждом обновлении страницы загружаются занные с памяти
  if (server.arg("save") == "save")
  {
  EEPROM.put(1, _timerMFatall); // записываем об timerMaxFatall в памяти по 1 адресу инт зани мает 4 байта
  EEPROM.put(5,_literLimit); // записываем запись об impulseMax в памяти по 5 адресу инт зани мает 4 байта
  EEPROM.put(9, _literM);  // записываем запись об _literM в памяти по 9 адресу инт зани мает 4 байта
  EEPROM.put(13, _literImp); // записываем запись об _literImp в памяти по 13 адресу инт зани мает 4 байта
  EEPROM.put(17, _choceSensor); //Добавил/// записываем запись об choceSensor в памяти по 17 адресу bool зани мает 1 байта
  EEPROM.commit(); // применить запись
  Serial.println("Что ввели с веб морды: " + String(_timerMFatall) + " милисекунды" + "\n"+ String(_literLimit) + " Импульсов");
  _triger=true;  
  }
  server.sendHeader("Location", "/",true);
  server.send(302, "text/plain", "");
}
void settingsChoceSensor()
{
  _choceSensor = strToBool(server.arg("choceSensor"));  //Добавил _choceSensor не ясно как преобразовать стр в булл
  //EEPROM.put(17, _choceSensor); //Добавил/// записываем запись об choceSensor в памяти по 17 адресу bool зани мает 1 байта
  //EEPROM.commit(); // применить запись
  Serial.println(_choceSensor);
  //_triger=true;  
  server.sendHeader("Location", "/",true);
  server.send(302, "text/plain", "");
}
//Добавил/// возмодно надо убрать получение переменных и загрузить их сразу с памяти
void setupWIFI(int timerMFatall,int literLimit) 
{
  _timerMFatall = timerMFatall;  
  _literLimit = literLimit;
  EEPROM.get(9, _literM); // получаем запись об данных в памяти по 9 адресу
  EEPROM.get(13, _literImp); // получаем запись об ошибданныхке в памяти по 13 адресу
  EEPROM.get(17, _choceSensor); //Добавил/// получаем запись об choceSensor в памяти по 17 адресу bool зани мает 1 байта
  WiFi.softAP(ssid, password);
  WiFi.softAPConfig(local_ip,gateway,subnet);
  delay(100);
  server.on("/", handle_OnConnect);  
  server.on("/SettingWaterTime",inputWebFace);
  server.on("/SettingChoceSensor",settingsChoceSensor);
  server.begin();
  Serial.println("HTTP server started");
}
/*Фуекцию в ЛУП */
void loopWIFI() {
  server.handleClient();
}